package com.anxin.act.task.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.anxin.framework.aspectj.lang.annotation.DataScope;
import com.anxin.framework.web.service.BaseService;
import com.anxin.common.utils.SecurityUtils;
import com.anxin.sys.system.entity.SysUser;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import com.anxin.act.task.dao.WfTaskReadDao;
import com.anxin.act.task.entity.WfTaskRead;

/**
 * 待办任务是否已读状态Service业务层处理
 *
 * @author jbs
 * @date 2022-08-09
 */
@Service
public class WfTaskReadService extends BaseService<WfTaskReadDao,WfTaskRead>{
    @Autowired
    private WfTaskReadDao wfTaskReadDao;

    /**
     * 查询待办任务是否已读状态
     *
     * @param id 待办任务是否已读状态ID
     * @return 待办任务是否已读状态
     */
    public WfTaskRead getById(String id){
        return wfTaskReadDao.getById(id);
    }

    /**
     * 查询待办任务是否已读状态列表
     *
     * @param wfTaskRead 待办任务是否已读状态
     * @return 待办任务是否已读状态
     */
    public List<WfTaskRead> findList(WfTaskRead wfTaskRead){
        return wfTaskReadDao.findList(wfTaskRead);
    }



    /**
     * 保存待办任务是否已读状态
     *
     * @param wfTaskRead 待办任务是否已读状态
     * @return 结果
     */
    public int save(WfTaskRead wfTaskRead){
        return super.save(wfTaskRead);
    }

    /**
     * 根据流程实例ID查询已读未读记录
     * @param actId
     * @return
     */
    public Map<String,String> findByActId(String actId){
        Map<String,String> res = new HashMap<>();

        List<WfTaskRead> wfTaskReadList = wfTaskReadDao.findList(new WfTaskRead(actId));
        for (WfTaskRead wfTaskRead : wfTaskReadList) {
            res.put(wfTaskRead.getTaskId() + "_" + wfTaskRead.getUserId(),"Y");
        }

        return res;

    }


    /**
     * 删除待办任务是否已读状态信息
     *
     * @param id 待办任务是否已读状态ID
     * @return 结果
     */
    public int deleteById(String id){
        SysUser user = SecurityUtils.getUser();
        return wfTaskReadDao.deleteById(id,user.getId());
    }

    /**
     * 根据taskId与userId查询
     * @param taskId
     * @param userId
     * @return
     */
    public WfTaskRead getByTaskId(String taskId, String userId) {
        return wfTaskReadDao.getByTaskId(taskId, userId);
    }

    /**
     * 根据ActId查询
     * @param actId
     * @return
     */
    public WfTaskRead getByActId(String actId) {
        return wfTaskReadDao.getByActId(actId);
    }
}
